home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / coding / 80x86 / incd2asm.lzh / INTRO.ASM < prev    next >
Assembly Source File  |  1992-08-09  |  47KB  |  1,639 lines

  1. DATA            SEGMENT
  2.                 ASSUME DS:DATA
  3.  
  4. ;Each section of the text has to contain 7 lines as showed below!
  5. ;If the text isn't written like the example below the intro won't work!
  6. ;Also don't start to put in extra chars to center the text.
  7. ;The intro will center the text for you.
  8. ;You can use these chars in the text:
  9. ;a to z ,.-+=*&()!?#/ 0123456789
  10. ;Ps : Please don't alter/remove the last section with the credits!
  11. ;   : You can max write 40 sections of text!
  12. ;   : The intro uses the amount of 202 KB memory!
  13. ;   : If you wanna contact me (Xerox) Write to:
  14. ;   : Kenneth Houborg, Munkedalen 3, 7080 Borkop, Denmark.
  15. ;   : Or call (+45) 75 866909!
  16.  
  17.  
  18. Text            label   byte
  19.  
  20.                 db      0,' ',0                   ;make empty lines like this!
  21.                 db      0,'the international',0
  22.                 db      0,'network of crackers',0
  23.                 db      0,'are proud to present:',0
  24.                 db      0,' ',0
  25.                 db      0,'a new intro by xerox',0
  26.                 db      0,' ',0
  27.  
  28.                 db      0,'greetings to:',0
  29.                 db      0,' ',0
  30.                 db      0,'macro nit',0
  31.                 db      0,'red scorpion',0
  32.                 db      0,'knight ranger',0
  33.                 db      0,'rick d. & burning c.',0
  34.                 db      0,'jch, drax & jo / vibrants',0
  35.  
  36.                 db      0,' ',0
  37.                 db      0,'the credits',0
  38.                 db      0,'*************',0
  39.                 db      0,'font by grafictive',0
  40.                 db      0,'programming by xerox',0
  41.                 db      0,'music+player by vibrants',0
  42.                 db      0,' ',0
  43.  
  44.                 db      255                   ;Marks end of text! DON'T FORGET!
  45. ;-------------------------------------------------------------------------------
  46. TextPointer     dw      (5*7) dup (0) ;40 sections of text..May be increased!
  47.  
  48. Total           dw      0
  49. Current         dw      0
  50. Position        dw      0
  51. Text_Count      dw      0
  52. NumberOfLines   dw      0
  53. CurrentLine     dw      0
  54. NextLine        dw      0
  55. Iadd            dw      0
  56. StopVar         db      1
  57. SecondDisplay   dw      0
  58. UnPackedSeg     dw      0
  59. UnPackedCharSeg dw      0
  60. Pointer         dw      0
  61. Var1            db      0
  62. Var2            db      0
  63. Var3            db      0
  64. PelTabel1       db      700  dup (0)
  65. PelTabel2       db      700  dup (0)
  66. Red             db      18   dup (0)
  67. Green           db      18   dup (0)
  68. Blue            db      18   dup (0)
  69. CheckTabel      db      18   dup (0)
  70.  
  71. SINUS           DW      325,328,332,336,340,344,348,352,356,360,364,368,372
  72.                 DW      376,380,384,388,392,396,400,403,407,411,415,419,423,426
  73.                 DW      430,434,438,441,445,449,453,456,460,463,467,471,474,478
  74.                 DW      481,485,488,492,495,498,502,505,508,512,515,518,521,524
  75.                 DW      528,531,534,537,540,543,546,549,551,554,557,560,563,565
  76.                 DW      568,571,573,576,578,581,583,586,588,590,592,595,597,599
  77.                 DW      601,603,605,607,609,611,613,615,617,618,620,622,623,625
  78.                 DW      626,628,629,631,632,633,634,636,637,638,639,640,641,642
  79.                 DW      642,643,644,645,645,646,647,647,648,648,648,649,649,649
  80.                 DW      649,649,649,649,649,649,649,649,649,649,648,648,648,647
  81.                 DW      647,646,645,645,644,643,642,642,641,640,639,638,637,636
  82.                 DW      634,633,632,631,629,628,626,625,623,622,620,618,617,615
  83.                 DW      613,611,609,607,605,603,601,599,597,595,592,590,588,586
  84.                 DW      583,581,578,576,573,571,568,565,563,560,557,554,551,549
  85.                 DW      546,543,540,537,534,531,528,524,521,518,515,512,508,505
  86.                 DW      502,498,495,492,488,485,481,478,474,471,467,463,460,456
  87.                 DW      453,449,445,441,438,434,430,426,423,419,415,411,407,403
  88.                 DW      400,396,392,388,384,380,376,372,368,364,360,356,352,348
  89.                 DW      344,340,336,332,328,325,321,317,313,309,305,301,297,293
  90.                 DW      289,285,281,277,273,269,265,261,257,253,249,246,242,238
  91.                 DW      234,230,226,223,219,215,211,208,204,200,196,193,189,186
  92.                 DW      182,178,175,171,168,164,161,157,154,151,147,144,141,137
  93.                 DW      134,131,128,125,121,118,115,112,109,106,103,100,98,95
  94.                 DW      92,89,86,84,81,78,76,73,71,68,66,63,61,59,57,54,52,50
  95.                 DW      48,46,44,42,40,38,36,34,32,31,29,27,26,24,23,21,20,18
  96.                 DW      17,16,15,13,12,11,10,9,8,7,7,6,5,4,4,3,2,2,1,1,1,0,0,0
  97.                 DW      0,0,0,0,0,0,0,0,0,0,1,1,1,2,2,3,4,4,5,6,7,7,8,9,10,11
  98.                 DW      12,13,15,16,17,18,20,21,23,24,26,27,29,31,32,34,36,38
  99.                 DW      40,42,44,46,48,50,52,54,57,59,61,63,66,68,71,73,76,78
  100.                 DW      81,84,86,89,92,95,98,100,103,106,109,112,115,118,121
  101.                 DW      125,128,131,134,137,141,144,147,151,154,157,161,164,168
  102.                 DW      171,175,178,182,186,189,193,196,200,204,208,211,215,219
  103.                 DW      223,226,230,234,238,242,246,249,253,257,261,265,269,273
  104.                 DW      277,281,285,289,293,297,301,305,309,313,317,321
  105. SinusLength     equ     $-Sinus
  106.  
  107. LogoPaletteTab  db      159,158,157,156,155,154,153,152,151,1,150,149,148,147,146,145,144
  108. ;-------------------------------------------------------------------------------
  109. ;Char data...
  110.  
  111.  
  112. CharPalette     label byte
  113.                 db 63,63,52
  114.                 db 57,55,39
  115.                 db 51,47,27
  116.                 db 45,38,18
  117.                 db 39,29,10
  118.                 db 33,20,03
  119.                 db 28,12,00
  120.  
  121. CharLength      dw      14,15,15,15,15,15,15,15,3,15,14,13,16,14,15,15,15,15,15,13,15
  122.                 dw      14,16,16,15,13,15,4,15,15,15,15,15,14,15,15,3,13,3,3,3,8,8,9,15,14
  123.                 dw      6,6,11,10,9
  124. CharOffsets     dw      60     dup (0)
  125.  
  126. PackedSeg       label   byte
  127. Include         incl\grafik.txt
  128.  
  129. EuropeLogo      label   byte
  130. Include         incl\europe.txt
  131.  
  132. EuropePalette:  db      37,00,00,41,06,06,45,14,14,50,24,24,54,35,35,58,48,48,63,63,63
  133.  
  134. PackedCharSeg   label   byte
  135. Include         incl\charset.txt
  136.  
  137. SetError7       db      'Allocation error: '
  138.                 db      'Memory control blocks destroyed.$'
  139. SetError8       db      'Allocation error: '
  140.                 db      'Insufficient memory.$'
  141. SetError9       db      'Allocation error: '
  142.                 db      'Invalid memory block adress.$'
  143.  
  144. SetUnknown      db      'Unknown allocation error.$'
  145. EndMessage      db      '(C) The International Network of Crackers 1992!',10,13,24h
  146.  
  147.  
  148.  
  149. DATA            ENDS
  150.  
  151. CODE            SEGMENT
  152.                 ASSUME CS:CODE
  153.  
  154. Include \source\lib\showtime.lib
  155.  
  156. _03d4h          dw      0
  157.  
  158. Player          dw      0,0
  159.  
  160. PlayMusic:      nop
  161.                 call    Dword ptr Player
  162.                 ret
  163.  
  164. CalcOffsets:    mov     ax,DATA
  165.                 mov     ds,ax
  166.                 xor     si,si
  167.                 mov     cx,21
  168.                 xor     ax,ax
  169. FirstLine:      mov     CharOffsets[si],ax
  170.                 add     ax,CharLength[si]
  171.                 add     si,2
  172.                 loop    FirstLine
  173.  
  174.                 mov     cx,25
  175.                 mov     ax,320*12
  176. SecondLine:     mov     CharOffsets[si],ax
  177.                 add     ax,CharLength[si]
  178.                 add     si,2
  179.                 loop    SecondLine
  180.  
  181.                 mov     cx,5
  182.                 mov     ax,320*24
  183. ThirdLine:      mov     CharOffsets[si],ax
  184.                 add     ax,CharLength[si]
  185.                 add     si,2
  186.                 loop    ThirdLine
  187.                 ret
  188.  
  189. AddCharSet:     mov     ax,DATA
  190.                 mov     ds,ax
  191.                 mov     es,UnPackedCharSeg
  192.                 mov     ds,UnPackedCharSeg
  193.                 xor     si,si
  194.                 xor     di,di
  195.  
  196.                 mov     cx,320*39
  197. AddNext:        lodsb
  198.                 cmp     al,0
  199.                 je      DontAdd
  200.                 add     al,240
  201. DontAdd:        stosb
  202.                 loop    AddNext
  203.                 ret
  204.  
  205. FindTextPointers:
  206.                 mov     ax,DATA
  207.                 mov     ds,ax
  208.                 xor     di,di
  209.  
  210.                 lea     si,Text
  211. NextPointer:    lodsb
  212.                 cmp     al,0
  213.                 je      FoundOne
  214.                 cmp     al,255
  215.                 je      DonePointers
  216.                 ret
  217.  
  218. FoundOne:       dec     si
  219.                 mov     TextPointer[di],si
  220.                 inc     si
  221.                 add     di,2
  222.                 mov     cx,500
  223. Search:         lodsb
  224.                 cmp     al,0
  225.                 je      NextPointer
  226.                 loop    Search
  227. DonePointers:   shr     di,1
  228.                 mov     NumberOfLines,di
  229.  
  230.                 xor     ax,ax
  231.                 xor     bx,bx
  232.  
  233. DIgen:          cmp     bx,di
  234.                 je      DoneP
  235.                 add     bx,7
  236.                 inc     ax
  237.                 jmp     DIgen
  238.                 ret
  239.  
  240. DoneP:          mov     Total,ax
  241.                 ret
  242.  
  243. CenterVar       dw      0
  244.  
  245. CenterText:     mov     ax,DATA
  246.                 mov     ds,ax
  247.  
  248. CenterAgain:    mov     bx,cs:CenterVar
  249.                 shl     bx,1
  250.                 mov     di,TextPointer[bx]
  251.  
  252.                 xor     si,si
  253.                 xor     bx,bx
  254.                 xor     ax,ax
  255.                 add     si,di
  256.  
  257. CenterNext:     mov     bl,Text[si+1]
  258.                 cmp     bl,0
  259.                 je      CenterEnd
  260.                 call    ICompare
  261.                 shl     bx,1
  262.                 add     ax,CharLength[bx]
  263.                 inc     si
  264.                 jmp     CenterNext
  265.  
  266. CenterEnd:      cmp     ax,320
  267.                 ja      CenterError
  268.                 mov     bx,320
  269.                 sub     bx,ax
  270.                 shr     bx,1
  271.                 mov     Text[di],bl
  272.  
  273.                 inc     cs:CenterVar
  274.                 mov     ax,NumberOfLines
  275.                 cmp     ax,cs:CenterVar
  276.                 jne     CenterAgain
  277.                 ret
  278.  
  279. CenterText2     db      'Error: To many chars in one of text lines!',10,13,24h
  280.  
  281. CenterError:    mov     ax,3
  282.                 int     10h
  283.  
  284.                 push    cs
  285.                 pop     ds
  286.                 mov     ah,9
  287.                 lea     dx,CenterText2
  288.                 int     21h
  289.                 mov     ax,4c00h
  290.                 int     21h
  291.  
  292. ClearSecondScreen:
  293.                 mov     ax,DATA
  294.                 mov     ds,ax
  295.  
  296.                 mov     es,SecondDisplay
  297.                 mov     cx,160*82
  298.                 xor     di,di
  299.                 mov     ax,0
  300.                 rep     stosw
  301.                 ret
  302.  
  303. NoVGA           db      'Sorry dude, you''ll need a VGA to see this!',10,13,24h
  304.  
  305. Include         incl\code.lib
  306.  
  307. Setup:
  308.  
  309. CheckForVga:    push    es
  310.                 mov     ah,1ah
  311.                 mov     al,0
  312.                 int     10h
  313.                 cmp     al,1ah
  314.                 je      VgaPresent
  315.                 mov     ax,3
  316.                 int     10h
  317.                 push    cs
  318.                 pop     ds
  319.                 lea     dx,NoVga
  320.                 mov     ah,9
  321.                 int     21h
  322.                 mov     ax,4c00h
  323.                 int     21h
  324. VgaPresent:     pop     es
  325.                 mov     bx,5312      ;(85000/16)
  326.                 call    SetBlock
  327.                 mov     bx,(65000/16)
  328.                 call    Allocate
  329.                 mov     UnPackedSeg,ax
  330.                 mov     bx,(320*42/16)    ;12.5 K
  331.                 call    Allocate
  332.                 mov     UnPackedCharSeg,ax
  333.                 mov     bx,(320*120)/16
  334.                 call    Allocate
  335.                 mov     SecondDisplay,ax
  336.                 mov     ax,ModSeg
  337.                 mov     Player[2],ax
  338.                 MOV     AH,6            ;Detect adlib card
  339.                 call    PlayMusic
  340.                 Jnc     NO_CARD_PRESENT
  341.                 mov     Byte ptr PlayMusic[0],0c3h   ;ret
  342. NO_CARD_PRESENT:MOV     AH,0
  343.                 MOV     BX,ModSeg
  344.                 MOV     CX,2390
  345.                 CALL    PlayMusic
  346.                 MOV     AH,2
  347.                 MOV     BX,0
  348.                 call    PlayMusic
  349.  
  350. CheckForMono:   xor     ax,ax
  351.                 mov     es,ax
  352.                 mov     ax,es:[463h]
  353.                 mov     _03d4h,ax
  354.  
  355. SetExtendMCGA:  mov     ax,13h
  356.                 int     10h
  357.                 mov     dx,3c4h
  358.                 mov     al,4
  359.                 out     dx,al
  360.                 inc     dx
  361.                 in      al,dx
  362.                 and     al,0f7h
  363.                 or      al,4
  364.                 out     dx,al
  365.                 mov     dx,3ceh
  366.                 mov     al,5
  367.                 out     dx,al
  368.                 inc     dx
  369.                 in      al,dx
  370.                 and     al,0efh
  371.                 out     dx,al
  372.                 dec     dx
  373.                 mov     al,6
  374.                 out     dx,al
  375.                 inc     dx
  376.                 in      al,dx
  377.                 and     al,0fdh
  378.                 out     dx,al
  379.                 mov     dx,cs:_03d4h
  380.                 mov     al,14h
  381.                 out     dx,al
  382.                 inc     dx
  383.                 in      al,dx
  384.                 and     al,0bfh
  385.                 out     dx,al
  386.                 dec     dx
  387.                 mov     al,17h
  388.                 out     dx,al
  389.                 inc     dx
  390.                 in      al,dx
  391.                 or      al,40h
  392.                 out     dx,al
  393.  
  394.                 call    Toogle
  395.                 
  396. ClearGfxScreen: mov     ax,0a000h
  397.                 mov     es,ax
  398.                 xor     di,di
  399.                 mov     cx,32768
  400.                 xor     ax,ax
  401.                 cld
  402.                 rep     stosw
  403.  
  404.                 mov     dx,cs:_03d4h
  405.                 mov     al,13h
  406.                 out     dx,al
  407.                 inc     dx
  408.                 mov     al,160
  409.                 out     dx,al
  410.  
  411.                 mov     ax,DATA
  412.                 mov     ds,ax
  413.                 mov     es,UnPackedSeg
  414. SetPalette:     lea     si,PackedSeg
  415.                 mov     cx,256*3
  416.                 mov     dx,3c8h
  417.                 xor     al,al
  418.                 out     dx,al
  419.                 inc     dx
  420. SetPal1:        lodsb
  421.                 out     dx,al
  422.                 loop    SetPal1
  423.  
  424.                 lea     si,PackedSeg
  425.                 add     si,768
  426.                 xor     di,di
  427.                 MOV     CX,200
  428.                 mov     al,0
  429.                 MOV     BP,320
  430.                 MOV     BX,0
  431.                 MOV     DX,8
  432.                 call    Depack
  433.  
  434.                 mov     ax,DATA
  435.                 mov     ds,ax
  436.                 mov     es,UnPackedCharSeg
  437.                 lea     si,PackedCharSeg
  438.                 xor     di,di
  439.                 MOV     CX,40
  440.                 mov     al,0
  441.                 MOV     BP,320
  442.                 MOV     BX,0
  443.                 MOV     DX,8
  444.                 call    Depack
  445.  
  446.                 mov     ax,0a000h
  447.                 mov     es,ax
  448.                 mov     ax,DATA
  449.                 mov     ds,ax
  450.                 mov     ds,UnPackedSeg
  451.  
  452.                 mov     cx,4
  453. L3:             push    cx
  454.  
  455.                 mov     dx,3c4h
  456.                 mov     al,2
  457.                 out     dx,al
  458.                 inc     dx
  459.                 mov     al,cs:Plane
  460.                 out     dx,al
  461.  
  462.                 xor     si,si
  463.                 add     si,cs:SI_ADD
  464.                 mov     di,320*122+(320*7)
  465.                 add     di,11
  466.                 mov     cx,50
  467. l2:             push    cx
  468.                 mov     cx,80
  469. L1:             movsb
  470.                 add     si,3
  471.                 loop    L1
  472.                 add     di,240     ;Skib the two next screens
  473.                 pop     cx
  474.                 loop    L2
  475.  
  476.                 inc     cs:SI_ADD
  477.                 mov     al,cs:Plane
  478.                 shl     al,1
  479.                 mov     cs:Plane,al
  480.                 pop     cx
  481.                 loop    L3
  482. ;----------
  483.                 mov     cs:Plane,1
  484.                 mov     cs:SI_ADD,0
  485.  
  486.                 mov     cx,4
  487. A3:             push    cx
  488.  
  489.                 mov     dx,3c4h
  490.                 mov     al,2
  491.                 out     dx,al
  492.                 inc     dx
  493.                 mov     al,cs:Plane
  494.                 out     dx,al
  495.  
  496.                 mov     si,320*53
  497.                 add     si,cs:SI_ADD
  498.                 mov     di,320*122+80+(320*4)           ;Start at second screen
  499.                 add     di,11
  500.                 mov     cx,63
  501. A2:             push    cx
  502.                 mov     cx,80
  503. A1:             movsb
  504.                 add     si,3
  505.                 loop    A1
  506.                 add     di,240          ;Skip the two next screens
  507.                 pop     cx
  508.                 loop    A2
  509.  
  510.                 inc     cs:SI_ADD
  511.                 mov     al,cs:Plane
  512.                 shl     al,1
  513.                 mov     cs:Plane,al
  514.                 pop     cx
  515.                 loop    A3
  516. ;----------
  517.                 mov     cs:Plane,1
  518.                 mov     cs:SI_ADD,0
  519.  
  520.                 mov     cx,4
  521. B3:             push    cx
  522.  
  523.                 mov     dx,3c4h
  524.                 mov     al,2
  525.                 out     dx,al
  526.                 inc     dx
  527.                 mov     al,cs:Plane
  528.                 out     dx,al
  529.  
  530.                 mov     si,320*125
  531.                 add     si,cs:SI_ADD
  532.                 mov     di,320*122+(320*4)+159   ;Start at third screen
  533.                 add     di,11
  534.                 mov     cx,63
  535. B2:             push    cx
  536.                 mov     cx,80
  537. B1:             movsb
  538.                 add     si,3
  539.                 loop    B1
  540.                 add     di,240          ;Skip the two next screens
  541.                 pop     cx
  542.                 loop    B2
  543.  
  544.                 inc     cs:SI_ADD
  545.                 mov     al,cs:Plane
  546.                 shl     al,1
  547.                 mov     cs:Plane,al
  548.                 pop     cx
  549.                 loop    B3
  550.  
  551.                 mov     ax,DATA
  552.                 mov     ds,ax
  553.  
  554.                 xor     si,si
  555.                 mov     cx,699
  556. Calc1:          inc     Var1
  557.                 inc     Var1
  558.                 cmp     Var1,8
  559.                 jne     Nu
  560.                 mov     Var1,0
  561.                 inc     Var2
  562. Nu:
  563.                 mov     al,Var1
  564.                 mov     ah,Var2
  565.                 mov     PelTabel1[si],al
  566.                 mov     PelTabel2[si],ah
  567.                 inc     si
  568.                 loop    Calc1
  569.  
  570.                 mov     ax,DATA
  571.                 mov     es,ax
  572.  
  573.                 mov     cx,17
  574.                 lea     si,CheckTabel
  575.                 lea     di,CheckTabel
  576.                 mov     bl,10
  577. Calc2:          lodsb
  578.                 add     al,bl
  579.                 stosb
  580.                 add     bl,2
  581.                 loop    Calc2
  582.                 call    SetLineCompare
  583.  
  584.                 mov     ax,0a000h
  585.                 mov     es,ax
  586.  
  587.                 mov     di,320*5
  588.  
  589.                 mov     cx,40
  590. Amiga:          mov     dx,3c4h
  591.                 mov     al,2
  592.                 out     dx,al
  593.                 inc     dx
  594.                 mov     al,1111b
  595.                 out     dx,al
  596.                 mov     al,cs:Col
  597.                 stosb
  598.                 stosb
  599.                 inc     Byte ptr cs:Col
  600.                 loop    Amiga
  601.  
  602.                 mov     cs:Col,41
  603.  
  604.                 mov     di,320*119
  605.                 mov     cx,40
  606. Amiga2:         mov     dx,3c4h
  607.                 mov     al,2
  608.                 out     dx,al
  609.                 inc     dx
  610.                 mov     al,1111b
  611.                 out     dx,al
  612.                 mov     al,cs:Col
  613.                 stosb
  614.                 stosb
  615.                 dec     Byte ptr cs:Col
  616.                 loop    Amiga2
  617.  
  618.                 mov     ax,cs
  619.                 mov     ds,ax
  620.                 mov     es,ax
  621.  
  622.                 lea     si,Ycord1
  623.                 lea     di,Ycord1
  624.                 mov     cx,35
  625.  
  626. Calc4:          lodsw
  627.                 mov     bx,320
  628.                 mul     bx
  629.                 stosw
  630.                 loop    Calc4
  631.  
  632.                 lea     si,Ycord2
  633.                 lea     di,Ycord2
  634.                 mov     cx,35
  635. Calc5:          lodsw
  636.                 mov     bx,320
  637.                 mul     bx
  638.                 stosw
  639.                 loop    Calc5
  640.  
  641.                 lea     si,Ycord3
  642.                 lea     di,Ycord3
  643.                 mov     cx,35
  644. Calc6:          lodsw
  645.                 mov     bx,320
  646.                 mul     bx
  647.                 stosw
  648.                 loop    Calc6
  649.  
  650.                 mov     ax,0cffh
  651.                 int     21h
  652.  
  653.                 xor     si,si
  654.                 mov     ax,DATA
  655.                 mov     ds,ax
  656.                 lea     si,CharPalette[si]
  657.                 mov     cx,7*3
  658.                 mov     dx,3c8h
  659.                 mov     al,241
  660.                 out     dx,al
  661.                 inc     dx
  662. SetCharPal:     lodsb
  663.                 out     dx,al
  664.                 loop    SetCharPal
  665.  
  666.                 call    PrintEurope
  667.                 call    Toogle
  668.  
  669.                 call    ClearSecondScreen
  670.                 call    CalcOffsets
  671.                 call    AddCharSet
  672.                 call    FindTextPointers
  673.                 call    CenterText
  674.                 call    SetNewVectors
  675.                 ret
  676.  
  677. PrintEurope:    mov     ax,DATA
  678.                 mov     ds,ax
  679.                 mov     ax,0a000h
  680.                 mov     es,ax
  681.                 xor     di,di
  682.                 lea     si,EuropeLogo
  683.  
  684.                 mov     cx,8
  685. PrintLogo2:     push    cx
  686.                 push    di
  687.  
  688.                 mov     cx,320
  689. PrintLogo:      push    cx
  690.                 push    di
  691.  
  692.                 mov     ax,di
  693.                 call    Calculate
  694.                 add     di,cs:Variabel
  695.                 add     di,47
  696.  
  697.                 lodsb
  698.                 cmp     al,0
  699.                 jne     PrintBlack
  700.                 inc     di
  701.                 jmp     PrintCont
  702. PrintBlack:     add     al,199
  703.                 stosb
  704. PrintCont:      pop     di
  705.                 inc     di
  706.                 pop     cx
  707.                 loop    PrintLogo
  708.                 pop     di
  709.                 pop     cx
  710.                 add     cs:Variabel,320
  711.                 loop    PrintLogo2
  712.  
  713.                 lea     si,EuropePalette
  714.                 mov     dx,3c8h
  715.                 mov     al,200
  716.                 out     dx,al
  717.                 inc     dx
  718.                 mov     cx,7*3
  719. SetEuropePal1:  lodsb
  720.                 out     dx,al
  721.                 loop    SetEuropePal1
  722.                 ret
  723.  
  724.  
  725. Variabel        dw      320*110
  726.  
  727.  
  728. Col             db      2
  729.  
  730. SI_ADD          dw      0
  731. Plane           db      1
  732.  
  733. Start:          mov     ax,DATA
  734.                 mov     ds,ax
  735.  
  736.                 call    Setup
  737.                 call    MainPart
  738.  
  739.                 mov     ax,DATA
  740.                 mov     ds,ax
  741.  
  742.                 MOV     AH,2
  743.                 MOV     BX,0
  744.                 call    PlayMusic
  745.                 mov     ax,DATA
  746.                 mov     ds,ax
  747.                 mov     es,UnPackedSeg
  748.                 call    DeAllocate
  749.                 mov     es,UnPackedCharSeg
  750.                 call    DeAllocate
  751.                 mov     es,SecondDisplay
  752.                 call    DeAllocate
  753.                 mov     ax,3
  754.                 int     10h
  755.                 mov     ah,9
  756.                 lea     dx,EndMessage
  757.                 int     21h
  758.                 mov     ax,0cffh
  759.                 int     21h
  760.                 mov     ax,4c00h
  761.                 int     21h
  762. ;-------------------------------------------------------------------------------
  763. MoveLogo:
  764.                 mov     ax,DATA
  765.                 mov     ds,ax
  766.  
  767.                 mov     si,Pointer
  768.                 shl     si,1
  769.                 mov     bx,Sinus[si]
  770.  
  771.                 mov     dx,cs:_03d4h
  772.                 mov     al,0dh
  773.                 out     dx,al
  774.                 inc     dx
  775.                 mov     al,PelTabel2[bx]
  776.                 out     dx,al
  777.  
  778.                 mov     dx,cs:_03d4h
  779.                 mov     al,0ch
  780.                 out     dx,al
  781.                 inc     dx
  782.                 mov     al,150
  783.                 out     dx,al
  784.  
  785.                 add     Var3,4
  786.  
  787.                 mov     dx,3dah         ;Clear flip/Flop
  788.                 in      al,dx
  789.  
  790.                 mov     dx,3c0h
  791.                 mov     al,51         ;51
  792.                 out     dx,al
  793.                 mov     al,PelTabel1[bx]        ;Var1
  794.                 out     dx,al
  795.  
  796.                 cmp     Pointer,510
  797.                 jne     Nope
  798.                 mov     Pointer,0
  799.                 jmp     Nope1
  800. Nope:           inc     Pointer
  801.                 inc     Pointer
  802. Nope1:          ret
  803.  
  804.  
  805. SetLineCompare:
  806.                 mov     dx,3dah
  807.                 in      al,dx
  808.  
  809.                 mov     dx,3c0h
  810.                 mov     al,10h
  811.                 out     dx,al
  812.                 inc     dx
  813.                 in      al,dx
  814.                 xor     al,00100000b
  815.                 push    ax
  816.  
  817.                 mov     dx,3dah
  818.                 in      al,dx
  819.  
  820.                 mov     dx,3c0h
  821.                 mov     al,10h
  822.                 out     dx,al
  823.                 pop     ax
  824.                 out     dx,al
  825.  
  826.  
  827.                 mov     dx,cs:_03d4h
  828.                 mov     al,18h
  829.                 out     dx,al
  830.                 inc     dx
  831.                 mov     al,140
  832.                 out     dx,al
  833.  
  834.                 mov     dx,cs:_03d4h
  835.                 mov     al,7
  836.                 out     dx,al
  837.                 inc     dx
  838.                 in      al,dx
  839.                 and     al,11101111b
  840.                 out     dx,al
  841.  
  842.  
  843.                 mov     dx,cs:_03d4h
  844.                 mov     al,9
  845.                 out     dx,al
  846.                 inc     dx
  847.                 in      al,dx
  848.                 and     al,10111111b
  849.                 out     dx,al
  850.                 ret
  851.  
  852.  
  853. SetLogoPalette: mov     cx,17
  854.                 xor     si,si
  855.                 mov     ax,DATA
  856.                 mov     ds,ax
  857.  
  858. Setpal2:        mov     dx,3c8h
  859.                 mov     al,LogoPaletteTab[si]      ;159 = Darkest!
  860.                 out     dx,al
  861.                 inc     dx
  862.                 mov     al,Red[si]
  863.                 out     dx,al
  864.                 nop
  865.                 nop
  866.                 mov     al,Green[si]
  867.                 out     dx,al
  868.                 nop
  869.                 nop
  870.                 mov     al,Blue[si]
  871.                 out     dx,al
  872.                 inc     si
  873.                 loop    Setpal2
  874.  
  875.                 cmp     cs:BigDelayy,500
  876.                 je      Switch
  877.                 inc     cs:BigDelayy
  878.  
  879.                 cmp     cs:Way,1
  880.                 je      FadeUp
  881.                 jmp     FadeDown
  882.  
  883. FadeUp:         call    ColorsOn
  884.                 ret
  885.  
  886. Switch:         mov     al,cs:Way
  887.                 xor     al,1
  888.                 mov     cs:Way,al
  889.  
  890.                 cmp     cs:way,0
  891.                 je      ShortDelay
  892.                 mov     cs:BigDelayy,0
  893.  
  894.                 cmp     cs:Color,2
  895.                 jne     Reset
  896.                 mov     cs:Color,0
  897.                 ret
  898. Reset:
  899.                 inc     cs:color
  900.                 ret
  901.  
  902. ShortDelay:     mov     cs:BigDelayy,350
  903.                 ret
  904.  
  905. Way             db      1
  906.  
  907. Delay           db      0
  908. BigDelayy       dw      0
  909. Color           db      0
  910.  
  911. ColorsOn:
  912.                 mov     ax,DATA
  913.                 mov     es,ax
  914.  
  915.                 cmp     Delay,2
  916.                 je      Okay1
  917.                 inc     Delay
  918.                 ret
  919.  
  920. Okay1:          mov     Delay,0
  921.                 xor     si,si
  922.  
  923.                 cmp     cs:Color,0
  924.                 je      RedOn
  925.                 cmp     cs:Color,1
  926.                 je      GreenOn
  927.                 jmp     BlueOn
  928.  
  929. RedOn:
  930.                 mov     cx,17
  931. RedOn2:         mov     al,Red[si]
  932.                 cmp     al,CheckTabel[si]
  933.                 je      Equal1
  934.                 inc     al
  935.                 mov     Red[si],al
  936.                 mov     Green[si],al
  937. Equal1:         inc     si
  938.                 loop    RedOn2
  939.                 ret
  940.  
  941. GreenOn:
  942.                 mov     cx,17
  943. RedOn3:         mov     al,Green[si]
  944.                 cmp     al,CheckTabel[si]
  945.                 je      Equal2
  946.                 inc     al
  947.                 mov     Green[si],al
  948.                 mov     Blue[si],al
  949. Equal2:         inc     si
  950.                 loop    RedOn3
  951.                 ret
  952.  
  953. BlueOn:
  954.                 mov     cx,17
  955. RedOn4:         mov     al,Blue[si]
  956.                 cmp     al,CheckTabel[si]
  957.                 je      Equal3
  958.                 inc     al
  959.                 mov     Blue[si],al
  960.                 mov     Red[si],al
  961. Equal3:         inc     si
  962.                 loop    RedOn4
  963.                 ret
  964.  
  965. Delay2          db      0
  966.  
  967. FadeDown:       mov     ax,DATA
  968.                 mov     ds,ax
  969.  
  970.                 cmp     cs:Delay2,2
  971.                 je      Okay2
  972.                 inc     cs:Delay2
  973.                 ret
  974.  
  975. Okay2:          mov     cs:Delay2,0
  976.  
  977.                 mov     cx,17
  978.                 xor     si,si
  979. Fade1:          cmp     Red[si],0
  980.                 je      Skip1
  981.                 dec     Red[si]
  982. Skip1:          cmp     Green[si],0
  983.                 je      Skip2
  984.                 dec     Green[si]
  985. Skip2:          cmp     Blue[si],0
  986.                 je      Skip3
  987.                 dec     Blue[si]
  988. Skip3:          inc     si
  989.                 loop    Fade1
  990.                 ret
  991.  
  992.  
  993. AmigaDelay      db      0
  994.  
  995. AmigaLike:
  996.                 inc     cs:AmigaDelay
  997.                 cmp     cs:AmigaDelay,2
  998.                 je      Amigal
  999.                 ret
  1000.  
  1001. Amigal:         mov     cs:AmigaDelay,0
  1002.                 mov     ax,0a000h
  1003.                 mov     ds,ax
  1004.                 mov     es,ax
  1005.                 pushf
  1006.  
  1007.                 mov     dx,3c4h
  1008.                 mov     al,2
  1009.                 out     dx,al
  1010.                 inc     dx
  1011.                 mov     al,1111b
  1012.                 out     dx,al
  1013.  
  1014.                 mov     si,320*5
  1015.                 lodsw
  1016.                 push    ax
  1017.  
  1018.                 cld
  1019.                 mov     si,2+320*5
  1020.                 mov     di,320*5
  1021.                 mov     cx,40
  1022.                 rep     movsw
  1023.  
  1024.                 pop     ax
  1025.                 mov     di,78+320*5
  1026.                 stosw
  1027.  
  1028.                 std
  1029.                 mov     si,76+(320*119)
  1030.                 mov     di,78+(320*119)
  1031.  
  1032.                 mov     bx,es:[di]
  1033.                 mov     cx,40
  1034.                 rep     movsw
  1035.  
  1036.                 mov     es:[320*119],bx
  1037.                 popf
  1038.                 ret
  1039. ;-------------------------------------------------------------------------------
  1040. Xcord1          dw      100,300,180,80,270,105,219,130,170,250,65,96,310,92,180
  1041.                 dw      77,35,246,295,127,230,102,160,100,123,276,132,234,304
  1042.                 dw      230,17,190,95,36,103               ; 35 stks
  1043.  
  1044. YCord1          dw      15,116,30,83,95,65,13,45,37,100,88,118,23,21,9,7
  1045.                 dw      55,98,100,45,58,42,16,70,65,95,62,14,64,28,92,106
  1046.                 dw      15,23,92                        ;35 Stks
  1047.  
  1048. Xcord2          dw      106,300,180,80,270,105,219,130,170,255,65,96,310,92,180
  1049.                 dw      77,35,246,295,127,230,102,160,100,123,276,132,234,304
  1050.                 dw      230,17,190,95,36,103               ; 35 stks
  1051.  
  1052. YCord2          dw      25,27,102,16,17,70,115,103,45,23,80,91,46,35,74,71
  1053.                 dw      42,12,117,9,13,60,81,93,29,105,77,53,23,91,14,47,56
  1054.                 dw      116,37                          ;35 stks
  1055.  
  1056. Xcord3          dw      106,300,180,80,270,105,219,130,170,255,65,96,310,92,180
  1057.                 dw      77,35,246,295,127,230,102,160,100,123,276,132,234,304
  1058.                 dw      230,17,190,95,36,103               ; 35 stks
  1059.  
  1060. YCord3          dw      15,116,30,83,95,65,13,45,37,100,88,118,23,21,9,7
  1061.                 dw      55,98,100,45,58,42,16,70,65,95,62,14,64,28,92,106
  1062.                 dw      15,23,92                        ;35 Stks
  1063.  
  1064. Dot1            equ     254   ;254
  1065. Dot2            equ     253   ;253
  1066. Dot3            equ     252   ;252
  1067.  
  1068. StarVar1        dw      0
  1069.  
  1070. Star            dw      0
  1071.  
  1072. Stars:          call    Plan1
  1073.                 call    Plan2
  1074.                 call    Plan3
  1075.                 ret
  1076.  
  1077.  
  1078. Calculate:      push    ax
  1079.                 and     ax,00000011b
  1080.                 mov     bp,ax
  1081.  
  1082.                 mov     bl,al
  1083.                 mov     dx,3ceh
  1084.                 mov     al,4
  1085.                 out     dx,al
  1086.                 inc     dx
  1087.                 mov     al,bl
  1088.                 out     dx,al
  1089.  
  1090.                 mov     bx,bp
  1091.                 mov     dx,3c4h
  1092.                 mov     al,2
  1093.                 out     dx,al
  1094.                 inc     dx
  1095.                 mov     al,cs:C_Tabel[bx]
  1096.                 out     dx,al
  1097.                 pop     di
  1098.                 shr     di,1
  1099.                 shr     di,1
  1100.                 ret
  1101.  
  1102. Plan1Var        dw      0
  1103. Speed1          equ     1
  1104.  
  1105. Plan1:
  1106.                 mov     ax,0a000h
  1107.                 mov     es,ax
  1108.  
  1109.                 mov     cs:Plan1Var,0
  1110.                 cld
  1111.                 mov     cx,35
  1112. Ako1:           mov     si,cs:Plan1Var
  1113.                 shl     si,1
  1114.                 mov     ax,cs:Xcord1[si]
  1115.                 push    ax
  1116.                 call    Calculate          ;Return position in DI
  1117.                 add     di,cs:Ycord1[si]
  1118.  
  1119.                 cmp     Byte ptr es:[di],0
  1120.                 jne     Nek1
  1121.  
  1122.                 mov     al,Dot1
  1123.                 stosb
  1124. Nek1:
  1125.  
  1126.                 pop     ax
  1127.                 dec     ax
  1128.                 call    Calculate
  1129.                 add     di,cs:Ycord1[si]
  1130.  
  1131.                 cmp     Byte ptr es:[di],Dot1
  1132.                 jne     Nek2
  1133.  
  1134.                 xor     al,al
  1135.                 stosb
  1136. Nek2:           inc     cs:Plan1Var
  1137.                 loop    Ako1
  1138.  
  1139.                 mov     ax,cs
  1140.                 mov     ds,ax
  1141.                 mov     es,ax
  1142.  
  1143.                 lea     si,Xcord1
  1144.                 lea     di,Xcord1
  1145.                 mov     cx,35
  1146. SpCalc1:        lodsw
  1147.                 cmp     ax,320
  1148.                 jng     IkkeNu1
  1149.                 mov     ax,0
  1150. IkkeNu1:        add     ax,Speed1
  1151.                 stosw
  1152.                 loop    SpCalc1
  1153.                 ret
  1154.  
  1155. ;-------------------------------------------------------------------------------
  1156. Plan2Var        dw      0
  1157. Speed2          equ     2
  1158.  
  1159. Plan2:
  1160.                 mov     ax,0a000h
  1161.                 mov     es,ax
  1162.  
  1163.                 mov     cs:Plan2Var,0
  1164.                 cld
  1165.                 mov     cx,35
  1166. Ako2:           mov     si,cs:Plan2Var
  1167.                 shl     si,1
  1168.                 mov     ax,cs:Xcord2[si]
  1169.                 push    ax
  1170.                 call    Calculate          ;Return position in DI
  1171.                 add     di,cs:Ycord2[si]
  1172.  
  1173.                 cmp     Byte ptr es:[di],0
  1174.                 jne     ANek1
  1175.  
  1176.                 mov     al,Dot2
  1177.                 stosb
  1178. ANek1:
  1179.                 pop     ax
  1180.                 sub     ax,speed2
  1181.                 call    Calculate
  1182.                 add     di,cs:Ycord2[si]
  1183.  
  1184.                 cmp     Byte ptr es:[di],Dot2
  1185.                 jne     ANek2
  1186.  
  1187.                 xor     al,al
  1188.                 stosb
  1189. ANek2:          inc     cs:Plan2Var
  1190.                 loop    Ako2
  1191.  
  1192.                 mov     ax,cs
  1193.                 mov     ds,ax
  1194.                 mov     es,ax
  1195.  
  1196.                 lea     si,Xcord2
  1197.                 lea     di,Xcord2
  1198.                 mov     cx,35
  1199. SpCalc2:        lodsw
  1200.                 cmp     ax,320
  1201.                 jng     IkkeNu2
  1202.                 mov     ax,0
  1203. IkkeNu2:        add     ax,Speed2
  1204.                 stosw
  1205.                 loop    SpCalc2
  1206.                 ret
  1207.  
  1208.  
  1209. Plan3Var        dw      0
  1210. Speed3          equ     3
  1211.  
  1212. Plan3:
  1213.                 mov     ax,0a000h
  1214.                 mov     es,ax
  1215.  
  1216.                 mov     cs:Plan3Var,0
  1217.                 cld
  1218.                 mov     cx,35
  1219. Ako3:           mov     si,cs:Plan3Var
  1220.                 shl     si,1
  1221.                 mov     ax,cs:Xcord3[si]
  1222.                 push    ax
  1223.                 call    Calculate          ;Return position in DI
  1224.                 add     di,cs:Ycord3[si]
  1225.  
  1226.  
  1227.                 cmp     Byte ptr es:[di],0
  1228.                 jne     bNek1
  1229.  
  1230.                 mov     al,Dot3
  1231.                 stosb
  1232. BNek1:
  1233.                 pop     ax
  1234.                 sub     ax,Speed3
  1235.                 call    Calculate
  1236.                 add     di,cs:Ycord3[si]
  1237.  
  1238.                 cmp     Byte ptr es:[di],Dot3
  1239.                 jne     BNek2
  1240.  
  1241.                 xor     al,al
  1242.                 stosb
  1243. BNek2:          inc     cs:Plan3Var
  1244.                 loop    Ako3
  1245.  
  1246.                 mov     ax,cs
  1247.                 mov     ds,ax
  1248.                 mov     es,ax
  1249.  
  1250.                 lea     si,Xcord3
  1251.                 lea     di,Xcord3
  1252.                 mov     cx,35
  1253. SpCalc3:        lodsw
  1254.                 cmp     ax,320
  1255.                 jng     IkkeNu3
  1256.                 mov     ax,0
  1257. IkkeNu3:        add     ax,Speed3
  1258.                 stosw
  1259.                 loop    SpCalc3
  1260.                 ret
  1261. ;-------------------------------------------------------------------------------
  1262. ICompare:       sub     bx,97
  1263.  
  1264.                 cmp     bx,' '-97
  1265.                 jne     Za1
  1266.                 mov     bx,50
  1267.  
  1268. Za1:            cmp     bx,'0'-97
  1269.                 jne     Za2
  1270.                 mov     bx,26
  1271.  
  1272. Za2:            cmp     bx,'1'-97
  1273.                 jne     Za3
  1274.                 mov     bx,27
  1275.  
  1276. Za3:            cmp     bx,'2'-97
  1277.                 jne     Za4
  1278.                 mov     bx,28
  1279.  
  1280. Za4:            cmp     bx,'3'-97
  1281.                 jne     Za5
  1282.                 mov     bx,29
  1283.  
  1284. Za5:            cmp     bx,'4'-97
  1285.                 jne     Za6
  1286.                 mov     bx,30
  1287.  
  1288. Za6:            cmp     bx,'5'-97
  1289.                 jne     Za7
  1290.                 mov     bx,31
  1291.  
  1292. Za7:            cmp     bx,'6'-97
  1293.                 jne     Za8
  1294.                 mov     bx,32
  1295.  
  1296. Za8:            cmp     bx,'7'-97
  1297.                 jne     Za9
  1298.                 mov     bx,33
  1299.  
  1300. Za9:            cmp     bx,'8'-97
  1301.                 jne     Za10
  1302.                 mov     bx,34
  1303.  
  1304. Za10:           cmp     bx,'9'-97
  1305.                 jne     Za11
  1306.                 mov     bx,35
  1307.  
  1308. Za11:           cmp     bx,'!'-97
  1309.                 jne     Za12
  1310.                 mov     bx,36
  1311.  
  1312. Za12:           cmp     bx,'?'-97
  1313.                 jne     Za13
  1314.                 mov     bx,37
  1315.  
  1316. Za13:           cmp     bx,'.'-97
  1317.                 jne     Za14
  1318.                 mov     bx,38
  1319.  
  1320. Za14:           cmp     bx,','-97
  1321.                 jne     Za15
  1322.                 mov     bx,39
  1323.  
  1324. Za15:           cmp     bx,':'-97
  1325.                 jne     Za16
  1326.                 mov     bx,40
  1327.  
  1328. Za16:           cmp     bx,'-'-97
  1329.                 jne     Za17
  1330.                 mov     bx,41
  1331.  
  1332. Za17:           cmp     bx,'='-97
  1333.                 jne     Za18
  1334.                 mov     bx,42
  1335.  
  1336. Za18:           cmp     bx,'+'-97
  1337.                 jne     Za19
  1338.                 mov     bx,43
  1339.  
  1340. Za19:           cmp     bx,'&'-97
  1341.                 jne     Za20
  1342.                 mov     bx,44
  1343.  
  1344.  
  1345. Za20:           cmp     bx,'*'-97
  1346.                 jne     Za21
  1347.                 mov     bx,45
  1348.  
  1349. Za21:           cmp     bx,'('-97
  1350.                 jne     Za22
  1351.                 mov     bx,46
  1352.  
  1353. Za22:           cmp     bx,')'-97
  1354.                 jne     Za23
  1355.                 mov     bx,47
  1356.  
  1357. Za23:           cmp     bx,'#'-97
  1358.                 jne     Za24
  1359.                 mov     bx,48
  1360.  
  1361. Za24:           cmp     bx,'/'-97
  1362.                 jne     ZDone
  1363.                 mov     bx,49
  1364. ZDone:          ret
  1365. ;-------------------------------------------------------------------------------
  1366.  
  1367.  
  1368. Print:          call    ShowSecondDisplay
  1369.                 mov     ax,DATA
  1370.                 mov     ds,ax
  1371.  
  1372.                 cmp     CurrentLine,7
  1373.                 je      XStop
  1374.  
  1375.                 cmp     StopVar,2      ;Clear screen
  1376.                 je      ClearScreen
  1377.  
  1378.                 cmp     StopVar,1      ;Make screen
  1379.                 je      Yeah
  1380.                 ret
  1381.  
  1382. XStop:          jmp     Stop
  1383.  
  1384. ClrOffset       dw      0
  1385.  
  1386. ClearScreen:    mov     ax,DATA
  1387.                 mov     ds,ax
  1388.                 mov     es,SecondDisplay
  1389.  
  1390.                 mov     di,cs:ClrOffset
  1391.                 mov     ax,0
  1392.                 mov     cx,160
  1393.                 rep     stosw
  1394.                 add     cs:ClrOffset,320
  1395.                 cmp     cs:ClrOffset,320*81
  1396.                 je      Stop2
  1397.                 ret
  1398.  
  1399. Stop2:          mov     cs:ClrOffset,0
  1400.                 mov     StopVar,1
  1401.                 ret
  1402.  
  1403. Yeah:
  1404.  
  1405.                 mov     si,NextLine
  1406.                 shl     si,1
  1407.                 mov     bx,TextPointer[si]
  1408.  
  1409.                 mov     di,Position
  1410.                 xor     ax,ax
  1411.                 mov     al,Text[0+bx]
  1412.                 add     di,ax
  1413.                 mov     si,Text_Count
  1414.                 xor     cx,cx
  1415.                 mov     cl,Text[si+1+bx]
  1416.                 cmp     cx,0
  1417.                 jne     Ok
  1418.  
  1419.                 inc     NextLine
  1420.                 add     Iadd,320*12
  1421.  
  1422.                 mov     ax,Iadd
  1423.                 mov     Position,ax
  1424.                 mov     Text_count,0
  1425.                 inc     CurrentLine
  1426.                 ret
  1427.  
  1428. Stop:           mov     StopVar,0
  1429.                 ret
  1430.  
  1431. Ok:
  1432.                 mov     bx,cx
  1433.                 call    ICompare
  1434.                 shl     bx,1
  1435.  
  1436.                 mov     si,CharOffsets[bx]
  1437.                 mov     dx,CharLength[bx]
  1438.                 add     Position,dx
  1439.                 inc     Text_count
  1440.  
  1441.                 mov     es,SecondDisplay
  1442.                 mov     ds,UnPackedCharSeg
  1443.  
  1444.                 mov     cx,10
  1445. GetNextLine:    push    cx
  1446.                 mov     ax,di
  1447.                 mov     bx,si
  1448.  
  1449.                 mov     cx,dx
  1450.                 rep     movsb
  1451.  
  1452.                 mov     si,bx
  1453.                 add     si,320
  1454.                 mov     di,ax
  1455.                 add     di,320
  1456.                 pop     cx
  1457.                 loop    GetNextLine
  1458.                 ret
  1459.  
  1460. ShowVar         dw      0
  1461. XDelay          dw      0
  1462.  
  1463. ShowSecondDisplay:
  1464.                 cmp     cs:XDelay,70
  1465.                 je      KKK2
  1466.                 inc     cs:XDelay
  1467.                 ret
  1468.  
  1469. KKK2:           mov     ax,DATA
  1470.                 mov     ds,ax
  1471.                 cmp     StopVar,0
  1472.                 je      KKK
  1473.                 ret
  1474.  
  1475. XStopShow:      jmp     StopShow
  1476.  
  1477. KKK:            mov     ds,SecondDisplay
  1478.                 mov     ax,0a000h
  1479.                 mov     es,ax
  1480.  
  1481.                 cmp     cs:ShowVar,320*41
  1482.                 je      XStopShow
  1483.                 add     cs:ShowVar,320
  1484.  
  1485.                 mov     si,cs:Pos1
  1486.                 mov     di,cs:Pos1x
  1487.                 call    DrawLine
  1488.                 add     cs:Pos1,640
  1489.                 add     cs:Pos1x,640
  1490.  
  1491.                 mov     si,cs:Pos2
  1492.                 mov     di,cs:Pos2x
  1493.                 call    DrawLine
  1494.                 sub     cs:Pos2,640
  1495.                 sub     cs:Pos2x,640
  1496.                 ret
  1497.  
  1498. Pos1            dw      0
  1499. Pos1X           dw      320*22
  1500.  
  1501. Pos2            dw      320*81
  1502. Pos2x           dw      320*103
  1503.  
  1504.  
  1505. DrawLine:       mov     bx,0
  1506.                 call    Calculate2
  1507.  
  1508.                 push    si
  1509.                 push    di
  1510.  
  1511.                 mov     cx,80
  1512. Getz1:          lodsb
  1513.                 stosb
  1514.                 add     si,3
  1515.                 loop    Getz1
  1516.  
  1517.                 pop     di
  1518.                 pop     si
  1519.                 inc     si
  1520.                 push    si
  1521.                 push    di
  1522.  
  1523.                 mov     bx,1
  1524.                 call    Calculate2
  1525.                 mov     cx,80
  1526. Getz2:          lodsb
  1527.                 stosb
  1528.                 add     si,3
  1529.                 loop    Getz2
  1530.  
  1531.                 pop     di
  1532.                 pop     si
  1533.                 inc     si
  1534.                 push    si
  1535.                 push    di
  1536.  
  1537.                 mov     bx,2
  1538.                 call    Calculate2
  1539.                 mov     cx,80
  1540. Getz3:          lodsb
  1541.                 stosb
  1542.                 add     si,3
  1543.                 loop    Getz3
  1544.  
  1545.                 pop     di
  1546.                 pop     si
  1547.                 inc     si
  1548.  
  1549.                 mov     bx,3
  1550.                 call    Calculate2
  1551.                 mov     cx,80
  1552. Getz4:          lodsb
  1553.                 stosb
  1554.                 add     si,3
  1555.                 loop    Getz4
  1556. StopShow:       ret
  1557.  
  1558.  
  1559. Calculate2:
  1560.                 and     bx,00000011b
  1561.  
  1562.                 mov     dx,3c4h
  1563.                 mov     al,2
  1564.                 out     dx,al
  1565.                 inc     dx
  1566.                 mov     al,cs:C_Tabel[bx]
  1567.                 out     dx,al
  1568.                 ret
  1569.  
  1570. C_Tabel         db      1,2,4,8
  1571.  
  1572. DisplayDelay    dw      0
  1573.  
  1574. ChangeDisplay:  cmp     cs:DisplayDelay,750
  1575.                 je      ChangeNow
  1576.                 inc     cs:DisplayDelay
  1577.                 ret
  1578.  
  1579. ChangeNow:
  1580.                 mov     ax,DATA
  1581.                 mov     ds,ax
  1582.  
  1583.                 mov     cs:DisplayDelay,0
  1584.  
  1585.                 inc     Current
  1586.                 mov     ax,Current
  1587.                 cmp     ax,Total
  1588.                 jne     WrapAround
  1589.                 mov     NextLine,0
  1590.                 mov     Current,0
  1591.  
  1592. WrapAround:     mov     StopVar,2      ;Clear screen
  1593.                 mov     Position,0
  1594.                 mov     Iadd,0
  1595.                 mov     CurrentLine,0
  1596.                 mov     cs:ShowVar,0
  1597.                 mov     cs:Pos1,0
  1598.                 mov     cs:pos1x,320*22
  1599.  
  1600.                 mov     cs:Pos2,320*81
  1601.                 mov     cs:pos2x,320*103
  1602.                 ret
  1603.  
  1604. MainPart:
  1605.                 mov     dx,3d4h
  1606.                 mov     al,6
  1607.                 mov     ah,0
  1608.                 out     dx,ax
  1609.  
  1610. Main:           call    Waitraster
  1611. ;-------------------------------------------------------------------------------
  1612.                 call    SetLogoPalette
  1613.                 call    AmigaLike
  1614.  
  1615.                 call    Stars
  1616.                 call    Print
  1617.                 call    ChangeDisplay
  1618.  
  1619.                 MOV     AH,3
  1620.                 call    PlayMusic
  1621.  
  1622.                 call    MoveLogo
  1623. ;-------------------------------------------------------------------------------
  1624.                 in      al,60h
  1625.                 cmp     al,1
  1626.                 jne     Main
  1627.                 call    RestoreVectors
  1628.                 ret
  1629.  
  1630.  
  1631. CODE            ENDS
  1632.  
  1633. ModSeg          Segment para
  1634. include         incl\alibi.txt
  1635. ModSeg          ends
  1636.  
  1637.                 END     Start
  1638.  
  1639.